// import NProgress from 'nprogress'
// import 'nprogress/nprogress.css'
// import i18n from '@/lang' // Internationalization
// import settings from './settings'
// 权限管理
import router from '@/router/index'
import { Message } from 'element-ui'
// import { Route } from 'vue-router'
import store from '@/store/index'
import { UserModule } from '@/store/modules/user'
import { PermissionModule } from '@/store/modules/permission'

// 路由守卫
router.beforeEach(async(to, from, next) => {
  // console.log((UserModule as any).store.state.user.token)
  const { username, getUserInfo, logout } = UserModule // 登录状态
  const token =
    UserModule.hrToken /* || (UserModule as any).store.state.user.token */
  const { path } = to // 当前页面
  const whiteList = ['/login', '/404', '/401'] // 白名单
  const isWhite = whiteList.indexOf(path) !== -1 // 是否在白名单
  // 已登录
  if (token) {
    // 获取用户信息
    if (!username) {
      await getUserInfo()
      const asyncRoutes = await PermissionModule.filterRoute()
      router.addRoutes([
        ...asyncRoutes,
        { path: '*', redirect: '/404', meta: { hidden: true } }
      ])
      next(path)
    }
    // 不允许访问登录页
    if (path === '/login') {
      Message.success('已登录，直接进入首页')
      console.log('已登录，直接进入首页')
      return next('/')
    }
    // 其他页面
    return next()
  } else {
    logout()
    // 未登录
    // 黑名单
    if (!isWhite) {
      Message.warning('未登录，请先登录')
      console.log('未登录，扔去登录页')
      return next('/401')
      // return next('/login')
    }
    // 白名单
    return next()
  }
})
